package com.molichuxing.gateway.api.services;

import javax.servlet.http.HttpServletRequest;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.gateway.bff.user.entity.request.create.ComplaintCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.create.UserCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.UserModifyVo;
import com.molichuxing.gateway.bff.user.entity.response.*;

import java.util.List;

/**
 * 
 * @author liyg
 * 用户网关接口
 * 2019-09-18
 */
public interface UserApiService {

	/**
	 * 用户登录注册接口
	 * @param createVo
	 * @param request
	 * @return
	 */
	ResponseResult<UserLoginVo> login(UserCreateVo createVo,HttpServletRequest request,String openId);

	/**
	 * 根据token获取用户信息
	 * @param token
	 * @return
	 */
	ResponseResult<UserVo> getUser(String token);

	/**
	 * 修改用户信息接口
	 * @param modifyVo
	 * @param token
	 * @return
	 */
	ResponseResult<String> modifyUser(UserModifyVo modifyVo, String token);

	/**
	 * 修改用户地址接口
	 * @param modifyVo
	 * @param token
	 * @return
	 */
	ResponseResult<Boolean> modifyUserAddress(UserModifyVo modifyVo, String token);

	/**
	 * 用户退出接口
	 * @param token
	 * @param channel
	 * @return
	 */
	ResponseResult<Boolean> logOut(String token,String channel);

	/**
	 * 查询消息列表
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	ResponseResult<Paged<MessageCenterVo>> getMessageCenterPage(Integer pageNum, Integer pageSize);

	/**
	 * 查询用户未读消息数量
	 * @return
	 */
	ResponseResult<Integer> getUnreadCount();

	/**
	 * 获取用户驾驶证信息
	 * @return
	 */
	ResponseResult<DrivingLicenseVo> getDrivingLicense();

	/**
	 * 获取用户投诉信息
	 * @return
	 */
	ResponseResult<ComplaintVo> getComplaintVo();

	/**
	 * 提交用户投诉信息
	 * @param createVo
	 * @return
	 */
	ResponseResult<Boolean> createComplaint(ComplaintCreateVo createVo);

	/**
	 * 检验用户是否黑名单和下单信息
	 * 
	 * @param token
	 * @return
	 */
	public ResponseResult<UserVerifyVo> verify(String token, String deviceNum);

	/**
	 * 根据token判断用户跳转的首页
	 * @return
	 */
	public ResponseResult<Boolean> verifyUserToIndex(String token);


	/**
	 * 根据token获取我的爱车信息
	 * @return
	 */
	public ResponseResult<List<UserHomeMyCarVo>> getHomeMyCar(String token, String channel);
}
